自从问了我最后一个问题whichturnedouttobeaboutrebasingwithGIT,我已经决定我根本不想rebase。相反,我想:分公司工作工作工作,随时检查和推送丢弃所有这些提交并假装它们从未发生过(因此在工作结束时进行一次干净的提交)我目前通过将文件复制到一个新目录,然后将它们复制回一个新分支(与我的工作分支在同一点分支),然后将其merge到master或任何地方。这真的很糟糕吗?为什么?更重要的是:是否有更好的/GIT方法来执行此操作?gitrebase-i强制我merge(并选择和挤压)。 最佳答案 最简单
我正在从事一个大型Rails项目,与我合作的团队正在使用Github来管理该项目。虽然许多更改是在本地进行的,然后直接推送到我们的开发分支,但当我们要进行非常大的更改时,我们会创建一个分支。当将该分支merge回开发时,我经常尝试在将我的功能分支merge到开发之前将开发rebase回我的功能分支(以防止覆盖其他人的工作)。我发现当我这样做时,我似乎遇到了两次相同的merge冲突。我在rebase时遇到了一整列冲突,然后在merge时再次遇到了相同的冲突列表。在将我的功能merge到开发之前,我应该将developrebase到我的功能分支,还是应该将我的功能merge到开发中?假设我
如果我遇到以下情况,$gitlog--oneline*abcdefcommit#b*123456commit#a我知道我总能跑$gitresetHEAD~$gitcommit--amend但是,我试着跑$gitrebase-iHEAD~2但是我得到了fatal:NeededasinglerevisioninvalidupstreamHEAD~2因此我的问题是:有没有办法使用gitrebase来压缩这两个提交? 最佳答案 您想rebase到master分支的根提交。更具体地说,要压缩这两个提交,您需要运行gitrebase-i--ro
当我编写代码时,我会将其分解成小的逻辑更改,以便于快速审查。为此,我使用gitrebase-i(交互式)来压缩、删除和更改提交的顺序。我注意到这有时会导致GitHubpull请求的提交顺序不同(尽管该顺序保留在远程分支上)。例如,提交1提交2提交3可能在PR中显示为:提交3提交1提交2我搜索了互联网,只找到了这个GitHub帮助页面:Whyaremycommitsinthewrongorder?他们的回答:Ifyourewriteyourcommithistoryviagitrebaseoraforcepush,youmaynoticethatyourcommitsequenceiso
我犯了一个错误:我应该使用gitpull--rebase,但我发出了一个简单的gitpull,merge了所有内容,现在在我的分支机构负责人。我想摆脱那个merge提交,我想我只是发出一个gitrebase-iHEAD~3,将我最后的本地提交移到顶部并将merge提交压缩到它。las,merge提交不可用于压缩。如果我这样做,我会进入中间状态,我需要再次进行merge,这是一项很多的工作。有没有办法不用再次执行merge就可以解决这个问题?似乎应该可以以某种方式使用merge提交? 最佳答案 tl;博士即使您可以在rebase中包含
好吧,所以我真的很喜欢gitrerere命令,尽管除了让它自动神奇地记录我的冲突并为我解决它们之外,我并没有真正使用过它。但是,在相当大的rebase期间,我确实弄乱了我的一个冲突解决方案(用最新版本rebase一个非常陈旧的功能分支)。feature->a-b-c-drelease->e-f-g-hrebase/feature->e-f-g-h.`a'-b'-c'-d'所以,例如说b'有一个不正确的merge(感谢我!),我想重新记录它。我该怎么做?我见过gitcheckout--conflict选项,在RerereYourBoat中提到过,但我不太清楚它是如何工作的,以及它是否适用
当我想通过交互式rebase压缩一些提交时:gitrebase-iHEAD~3然后:pickcbd03e3Finalcommit(signed)sf522f5dbla-bla-bla(signed)s09a7b7cbla-bla(signed)#Rebasec2e142e..09a7b7contoc2e142e...尽管所有这些提交都具有相同的签名,但最终提交没有gpg签名。交互式rebase压缩后是否可以保留提交的gpg签名? 最佳答案 如Cupcake所述,您无法保留未压缩提交中的旧签名,但如果您像这样rebase,您可以签署新
在正常的Git合并冲突中,用于三向合并的文件的三个版本大致如下:LOCAL:我的分支中的版本远程:另一个分支的版本BASE:两个分支的共同祖先(特别是我分支的HEAD和另一个分支的HEAD的共同祖先)的版本当GitCherry-pick产生合并冲突时,正确地说,没有共同的祖先,那么如何确定这些事情呢?可能会被问到有关重新设置的问题。 最佳答案 樱桃摘除非我误导了自己,否则如果您执行“gitcherry-pick”,那么您将得到:LOCAL:您正在之上(即分支的HEAD)合并的提交REMOTE:您正在挑选的提交(即)BASE:您正在挑
当我在与同事共享的分支上执行gitrebase-i时,我通常只想对自己的提交进行rebase。但是,由于交互式rebase工具不会将作者信息添加到rebase文件中(t给出的只是提交哈希和描述),我最终不得不去检查另一个选项卡中的提交以查看它们是否是我的。有什么方法可以给gitrebase-i一个--format标志(或类似的东西),让它包括作者? 最佳答案 从git2.6开始,gitrebase-i使用rebase.instructionFormat(默认%s)生成之后的文本选择NNNNN...。因为这是一个git-config项
你可以在整个网络上看到人们建议不要在公共(public)分支中使用gitrebase,但我看不出问题是什么,如果你总是rebase一个功能分支。我的团队总是使用分支来处理功能(哇),我们习惯于在本地使用它,所以rebase不是问题,但有时我们想向另一个开发人员展示部分完成的功能的代码,所以我们只是宣传它,但随后我们失去了gitrebase的所有优势,或者至少这是您可以在网络上阅读的内容。我不明白这是什么问题,如果在同一个公共(public)分支工作的开发人员从不将它merge到任何分支(当该分支上仍有开发时)并且当他们pull它时,他们通过rebase操作来完成.对分支所做的任何更改都